home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / util / rexx / addrexx11.lha / addrexx / addrexx.rexx < prev   
OS/2 REXX Batch file  |  2000-08-31  |  4KB  |  166 lines

  1. /*
  2. ** $VER: addrexx.rexx 1.1 (31.8.00) Rolf Max Rotvel
  3. */
  4.  
  5. call addlib('rexxreqtools.library', 0, -30, 0)
  6. call addlib('rexxsupport.library', 0, -30, 0)
  7. call addlib('locale.library', 0, -30, 0)
  8.  
  9. nl = '0a'x
  10. fallbackeditor = 'c:ed'
  11. center = 'rtez_flags=ezreqf_centertext'
  12. editor = ''
  13. maxsize = 500
  14. title = 'Addrexx 1.1'
  15.  
  16. dir = arg(1)
  17. res = pragma('d', dir)
  18. if res = '' then call exitreq('Error reading directory'nl||dir)
  19.  
  20. if (upper(dir) = 'ENV:' | (dir = '' & upper(res) = 'ENV:')) then env? = 1
  21. else env? = 0
  22.  
  23. show? = 0
  24. do forever
  25.     if ~show? then do
  26.         file = rtfilerequest(,, title, 'Show')
  27.         call rtfreefilebuffer()
  28.         if file = '' then exit
  29.         if env? then do
  30.             envfile = 'ENV:'file
  31.             envarcfile = 'ENVARC:'file
  32.         end
  33.     end
  34.     show? = show()
  35. end
  36.  
  37. SHOW:
  38. if ~open('tmp', file, 'r') then do
  39.     if ~newentry(file) then return 0
  40.     return 1
  41. end
  42.  
  43. txt = strip(readch('tmp', maxsize), 'b', ' 'nl)
  44. call close('tmp')
  45.  
  46. parse var txt chk (nl) .
  47. do i = 1 to min(length(chk), 5)
  48.     if ~isprint(substr(chk, i, 1)) then call exitreq('File is not ascii'nl||file)
  49. end
  50.  
  51. ans = rtezrequest(txt, 'Ok|_Ed|_New|_Ren|_Del|_Prt|Quit', file)
  52.  
  53. select
  54.     when ans = 1 then return 0
  55.     when ans = 2 then call editor()
  56.     when ans = 3 then call newentry()
  57.     when ans = 4 then call renameentry()
  58.     when ans = 5 then do
  59.         if ~deleteentry() then return 0
  60.     end
  61.     when ans = 6 then call print()
  62.     otherwise exit
  63. end
  64. return 1
  65.  
  66.  
  67. EDITOR:
  68. if editor = '' then do
  69.     if open('tmp', 'env:editor', 'r') then do
  70.         editor = readln('tmp')
  71.         call close('tmp')
  72.     end
  73.     if editor = '' then editor = fallbackeditor
  74. end
  75.  
  76. if env? then status = statef(file)
  77.  
  78. signal on failure
  79. address command editor '"'file'"'
  80. signal off failure
  81.  
  82. if env? then do
  83.     if statef(file) ~= status then do
  84.         if rtezrequest(envfile' has changed'nl'Save to ENVARC:?', 'Ok|Cancel', title, center) then do
  85.             if ~open('to', envarcfile, 'w') then call exitreq('Error writing'nl||envarcfile)
  86.             if ~open('from', file, 'r') then call exitreq('Error reading'nl||envfile)
  87.  
  88.             call writech('to', readch('from', 65535))
  89.             call close('to')
  90.             call close('from')
  91.         end
  92.     end
  93. end    
  94. return 
  95.  
  96.  
  97. NEWENTRY:
  98. newentry = arg(1)
  99.  
  100. if newentry ~= '' then newentrytxt = 'Create new file?'
  101. else newentrytxt = 'Enter name'
  102.  
  103. newfile = rtgetstring(newentry, newentrytxt)
  104.  
  105. if newfile ~= '' & rtresult ~= 0 then do
  106.     file = newfile
  107.     call editor()
  108. end
  109. else do
  110.     if newentry ~= '' then return 0
  111. end
  112. return 1
  113.  
  114.  
  115. RENAMEENTRY:
  116. newfile = rtgetstring(file, 'Enter new name')
  117.  
  118. if newfile ~= '' & rtresult ~= 0 then do
  119.     if newfile ~= file then do
  120.         if ~rename(file, newfile) then call exitreq('Error renaming'nl||file)
  121.  
  122.         if env? then do
  123.             envarcnewfile = 'ENVARC:'newfile
  124.             if rtezrequest('Rename 'envarcfile||nl' to 'envarcnewfile'?', 'Ok|Cancel', title, center) then do
  125.                 if ~rename(envarcfile, envarcnewfile) then call exitreq('Error renaming'nl||envarcfile)
  126.                 envarcfile = envarcnewfile
  127.             end
  128.             envfile = 'ENV:'newfile
  129.         end
  130.         file = newfile
  131.     end
  132. end
  133. return
  134.  
  135.  
  136. DELETEENTRY:
  137. if rtezrequest('Delete'nl||file'?', 'Ok|Cancel', title, center) then do
  138.     if ~delete(file) then call exitreq('Error deleting'nl||file)
  139.  
  140.     if env? then do
  141.         if exists(envarcfile) then do
  142.             if rtezrequest('Delete'nl||envarcfile'?', 'Ok|Cancel', title, center) then do
  143.                 if ~delete(envarcfile) then call exitreq('Error deleting'nl||envarcfile)
  144.                 return 0
  145.             end
  146.         end
  147.     end
  148.     else return 0
  149. end
  150. return 1
  151.  
  152.  
  153. PRINT:
  154. address command 'run >nil: copy "'file'" PRT:'
  155. return
  156.  
  157.  
  158. EXITREQ:
  159. call rtezrequest(arg(1),, title, center)
  160. exit
  161.  
  162.  
  163. FAILURE:
  164. call exitreq('Error running editor'nl||editor)
  165. return
  166.